_Pragma("once");

#include <string>
#include <MultiPortDevice.h>
#include <memory>

#include "CurrentVoltageInfo.h"

/**
 * 回路电流电压检测设备
 * 目前一般指 回路控制器和回路电流电压检测模块两种
 * @author lizb
 */
class ICurrentVoltageDetector : public MultiPortDevice {
public:

        using MultiPortDevice::MultiPortDevice;

    /**
     * 获取所有的相位信息
     * @return 获取所有的相位信息
     */
    virtual const std::string& getPhase() = 0;
    /**
     * 设置所有的相位信息
     * @param phaseString 所有相位信息
     */
    virtual void setPhase(const std::string& phaseString) = 0;

    virtual void setPhase(const int loopIndex, const char phase) = 0;

    /**
     * 更新所有数据
     */
    virtual bool updateInformation() = 0;

    virtual const CurrentVoltageInfo* getCurrentVoltageInfos() = 0;

};


using ICurrentVoltageDetectorPtr = std::shared_ptr<ICurrentVoltageDetector>;
